package 每日一题;

import java.util.Arrays;

/**
 * 771. 宝石与石头
 *  给你一个字符串 jewels 代表石头中宝石的类型，另有一个字符串 stones 代表你拥有的石头。 stones 中每个字符代表了一种你拥有的石头的类型，你想知道你拥有的石头中有多少是宝石。
 *
 * 字母区分大小写，因此 "a" 和 "A" 是不同类型的石头。
 *
 *
 *
 * 示例 1：
 *
 * 输入：jewels = "aA", stones = "aAAbbbb"
 * 输出：3
 * 示例 2：
 *
 * 输入：jewels = "z", stones = "ZZ"
 * 输出：0
 *
 *
 * 提示：
 *
 * 1 <= jewels.length, stones.length <= 50
 * jewels 和 stones 仅由英文字母组成
 * jewels 中的所有字符都是 唯一的
 */
public class T771_石头与宝石 {
    //转为字符数组 排序 遍历
    public int numJewelsInStones(String jewels, String stones) {

        char[] jewelsArray = jewels.toCharArray();
        char[] stonesArray = stones.toCharArray();

        Arrays.sort(jewelsArray);
        Arrays.sort(stonesArray);

        int JIndex = 0;
        int SIndex = 0;
        int result = 0;
        while (JIndex<jewelsArray.length&&SIndex<stonesArray.length){

            if (jewelsArray[JIndex]==stonesArray[SIndex]){
                result++;
                SIndex++;
                continue;
            }

            if (jewelsArray[JIndex]>stonesArray[SIndex]){
                SIndex++;
                continue;
            }

            if (jewelsArray[JIndex]<stonesArray[SIndex]){
                JIndex++;
            }
        }

        return result;

    }
}
